home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_56 / prepare.inc < prev    next >
Text File  |  1995-01-01  |  4KB  |  130 lines

  1. procedure prep_channels;
  2.   begin
  3.     textcolor(white);textbackground(blue);
  4.     window(1,8,80,25);clrscr;
  5.     window(1,1,80,25);
  6.   end;
  7.  
  8. procedure prep_patterns;
  9. var w:word;
  10.   begin
  11.     textcolor(white);textbackground(black);
  12.     window(1,8,80,25);clrscr;
  13.     textbackground(white);textcolor(black);
  14.     for w:=0 to 2 do begin gotoxy(w*28+6,1);write('    Chn ',2*w+startchn:2,'    '); end;
  15.     textbackground(black);textcolor(white);
  16.     for w:=0 to 1 do begin gotoxy(w*28+20,1);write('    Chn ',2*w+1+startchn:2,'    '); end;
  17.     window(1,1,80,25);
  18.     lastrow:=curline;
  19.     w:=pattern[curpattern];
  20.     if w>=$c000 then { switch EMSpage 0 to curpattern }
  21.       asm
  22.         mov         ax,w
  23.         xor         bx,bx
  24.         mov         ah,44h
  25.         mov         bl,al
  26.         xor         al,al
  27.         mov         dx,[patEMShandle]
  28.         int         67h
  29.       end;
  30.   end;
  31.  
  32. procedure prep_inst;
  33. var i,l:word;
  34. function posstring(b:byte):string;
  35. var psmp:pSmpheader;
  36.   begin
  37.     psmp:=addr(Instruments^[b]);
  38.     if psmp^.typ=1 then
  39.       begin
  40.         posstring:=w2hs(psmp^.mempos)+'h';
  41.       end
  42.     else
  43.       begin
  44.         posstring:='     ';
  45.       end;
  46.   end;
  47.   begin
  48.     textcolor(white);textbackground(blue);
  49.     window(1,8,80,25);clrscr;
  50.     writeln(' Sample positions in memory : ');
  51.     l:=15;
  52.     textcolor(yellow);
  53.     if useEMS then begin write(#10' EMS used by samples :',getusedEMSsmp,' KB') end;
  54.     textcolor(white);
  55.     for i:=1 to l do
  56.       begin
  57.         write(#13#10,i:2,': ',posstring(i),'  ');
  58.         write(i+l:2,': ',posstring(i+l),'  ');
  59.         write(i+2*l,': ',posstring(i+2*l),'  ');
  60.         write(i+3*l,': ',posstring(i+3*l),'  ');
  61.         write(i+4*l,': ',posstring(i+4*l),'  ');
  62.         write(i+5*l,': ',posstring(i+5*l),'  ');
  63.         if i+6*l<100 then write(i+6*l,': ',posstring(i+6*l),'  ');
  64.       end;
  65.     textcolor(white);textbackground(blue);
  66.     window(1,1,80,25);
  67.   end;
  68.  
  69. function leftformat(s:string;b:byte):string;
  70. var t:string;
  71.     i:byte;
  72.   begin
  73.     t:=s;for i:=length(s) to b do t:=t+' ';
  74.     t:=copy(t,1,b);
  75.     leftformat:=t;
  76.   end;
  77.  
  78. function hex2str(w:word):string;
  79. const s:string[16] = '0123456789ABCDEF';
  80.   begin
  81.     hex2str:=s[w div 256 div 16+1]+s[w div 256 mod 16+1]+s[w mod 256 div 16+1]+s[w mod 16+1]+'h';
  82.   end;
  83.  
  84. procedure prep_smp;
  85. const what:array[false..true] of string[3] = ('OFF','ON ');
  86. var i,j:byte;
  87.     Psmp:PSmpHeader;
  88.   begin
  89.     textcolor(white);textbackground(blue);
  90.     window(1,7,80,25);clrscr;
  91.     textbackground(brown);textcolor(white);
  92.     write('   #  Samplename                 Loop Beg   End   Len   C2Speed');clreol;
  93.     gotoxy(1,2);
  94.     textbackground(blue);
  95.     if wassmp_scr then
  96.       begin { only next page ... }
  97.         inc(samplepage);
  98.         i:=samplepage*18+1;
  99.         if i>insnum then begin samplepage:=0;i:=1 end;
  100.       end
  101.     else
  102.       begin
  103.         i:=1; { start at instrument 1 }
  104.         samplepage:=0;
  105.       end;
  106.     for j:=1 to 18 do
  107.       if i<insnum+1 then
  108.         begin
  109.           psmp:=addr(Instruments^[i]);
  110.           if j>1 then write(#10#13);
  111.           if pSmp^.typ=1 then textcolor(white) else textcolor(lightgray);
  112.           write(' ',i:2,'. ',leftformat(psmp^.name,28),' ',what[(psmp^.flags and 1) = 1],' ',
  113.                 hex2str(psmp^.loopbeg),' ',hex2str(psmp^.loopend),' ',hex2str(psmp^.length),' ',pSmp^.c2speed:5,'Hz');
  114.           inc(i);
  115.         end;
  116.     window(1,1,80,25);
  117.   end;
  118.  
  119. procedure prepare_scr;
  120.   begin
  121.     case screen_no of
  122.       0: { help screen }      display_helpscreen;
  123.       1: { channel view }     prep_channels;
  124.       2: { pattern view }     prep_patterns;
  125.       3: { Instrument infos } prep_inst;
  126.       4: { sample infos }     prep_smp;
  127.     end;
  128.     wassmp_scr:=screen_no=4;
  129.   end;
  130.